﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Escuela.Forms
{
    public partial class PagosProfesoresForm : Form
    {

        private Instituto inst;
        private int idProfesor;

        
        public PagosProfesoresForm(Instituto inst, int idProfesor)
        {
            InitializeComponent();
            this.inst = inst;
            this.idProfesor = idProfesor;
        }

        private void PagosProfesoresForm_Load(object sender, EventArgs e)
        {
            try
            {
                this.txtNumero.Text = this.idProfesor.ToString();
                this.pagos_realizados_ProfesorTableAdapter.Fill(this.escuelaDataSet6.pagos_realizados_Profesor, this.idProfesor);
            }
            catch { }
        }

        private void Nuevo_Click(object sender, EventArgs e)
        {
           
            //calculo lo que le tengo que pagar
        }

        private void Buscar_Click(object sender, EventArgs e)
        {
            this.txtMonto.Enabled = true;
            this.txtDescuento.Enabled = true;
            this.txtCantClases.Enabled = true;
            this.txtExtra.Enabled = true;
            this.txtPorcentaje.Enabled = true;
            this.txtTotal.Enabled = true;
            this.txtTotalParcial.Enabled = true;
            this.txtTotalPorClase.Enabled = true;
            this.txtMonto.Text = this.inst.liquidarProfesor(this.idProfesor, dtFechaInicio.Value, dtFechaFin.Value).ToString();
            
            
            //this.txtTotal.Text = this.txtMonto.Text;


            this.cargarGrid();
            this.actualizarTotales();
        }

        private void cargarGrid()
        {
            try
            {
                DataTable dt = this.inst.obtenerClasesPeriodo(this.idProfesor, dtFechaInicio.Value, dtFechaFin.Value);
                this.dataGridView1.DataSource = dt;

                //cargo clases
                this.txtCantClases.Text = dt.Rows.Count.ToString();

                this.actualizarTotales();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error cargando grilla de clases. " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void Pagos_Click(object sender, EventArgs e)
        {
            try
            {
                string obs = "Pago Profesor Legajo: " + this.txtNumero.Text + ". Total: " + this.txtTotal.Text + ". ";
                obs += "Monto Original: " + this.txtMonto.Text + ". Descuento: " + this.txtDescuento.Text + ". Extra: " + this.txtExtra.Text;
                this.inst.registrarPagoProfesor(Convert.ToDouble("-" + this.txtTotal.Text), Convert.ToInt32(this.txtNumero.Text), obs);


                this.pagos_realizados_ProfesorTableAdapter.Fill(this.escuelaDataSet6.pagos_realizados_Profesor, this.idProfesor);
                MessageBox.Show("Pago realizado con exito", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error registrando pago en DB. " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void txtDescuento_TextChanged(object sender, EventArgs e)
        {
            this.actualizarTotales();
        }

        private void txtExtra_TextChanged(object sender, EventArgs e)
        {
            this.actualizarTotales();
        }

        private void txtPorcentaje_TextChanged(object sender, EventArgs e)
        {
            this.actualizarTotales();
        }

        private void actualizarTotales()
        {
            try
            {
                double monto = Convert.ToDouble(this.txtMonto.Text);
                double porcentaje = Convert.ToDouble(this.txtPorcentaje.Text);
                double totalParcial = monto * (1 - (porcentaje / 100));
                double descuento = Convert.ToDouble(this.txtDescuento.Text);
                double extra = Convert.ToDouble(this.txtExtra.Text);
                double total = totalParcial - descuento + extra;

                double cantClases = Convert.ToDouble(this.txtCantClases.Text);

                double montoPorClase = totalParcial / cantClases;

                this.txtTotalPorClase.Text = montoPorClase.ToString();

                this.txtMonto.Text = monto.ToString();

                this.txtDescuento.Text = descuento.ToString();
                this.txtExtra.Text = extra.ToString();
                
                this.txtTotalParcial.Text = totalParcial.ToString();
                this.txtTotal.Text = total.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error actualizando totales. " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

       

        

    }
}
